export function debounce(func, delay) {
  let timer = null;
  return function(...args) {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(this, args);
    }, delay);
  };
}

/**
 *
 * @param { Number } timeStamp
 * @param { String } format
 * 格式化日时间戳
 */
export function formatDate(timeStamp, format) {
  //获取年份
  if (/(y+)/.test(format)) {
    let dateY = timeStamp.getFullYear() + "";
    //RegExp.$1 在判断中出现过，且是括号括起来的，所以 RegExp.$1 就是 "yyyy"
    format = format.replace(RegExp.$1, dateY.substr(4 - RegExp.$1.length));
  }

  //获取其他
  let o = {
    "M+": timeStamp.getMonth() + 1,
    "d+": timeStamp.getDate(),
    "h+": timeStamp.getHours(),
    "m+": timeStamp.getMinutes(),
    "s+": timeStamp.getSeconds()
  };
  for (const k in o) {
    if (new RegExp(`(${k})`).test(format)) {
      let str = o[k] + "";
      format = format.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? str : padLeftZero(str)
      );
    }
  }
  return format;
}

function padLeftZero(str) {
  return ("00" + str).substr(str.length);
}
